【アップデート】I/O最適化されたAmazon EC2 I8gインスタンスの一般提供が開始されました! #AWSreInvent
こんにちは!AWS事業本部のおつまみです。
Amazon EC2インスタンスタイプに関してアップデート情報があったので、お届けします!!
3行まとめ
- AWS Graviton4プロセッサを搭載し、前世代比で最大60%性能が向上するAmazon EC2 I8gインスタンスが登場した
- ストレージ集約型ワークロードに最適化された高性能インスタンスで、リアルタイム性を要するデータ分析などに最適である
- 現時点ではバージニア北部およびオレゴンのみ利用可能である
これまで
これまではストレージ集約型ワークロードに特化したインスタンスとしてI4gインスタンスが提供されていました。I4gインスタンス自体は2023/5に一般提供を開始していたようです。
今回のアップデート
今回のアップデートでは、以下のように性能が向上しています。
- AWS Graviton4プロセッサを搭載し、I4g比で最大60%の計算性能向上
- 第3世代AWS Nitro SSDを採用し、TBあたり最大65%のリアルタイムストレージ性能向上
- ストレージI/Oレイテンシーを最大50%低減、変動性を最大60%改善
- 最大24xlargeサイズ、768 GiBのメモリ、22.5 TBのインスタンスストレージを提供
詳細はこちらの製品ページをご確認ください。
やってみた
インスタンスの起動
I8gとI4gインスタンスの性能を比較してみるために、各々のインスタンスで fio を 1並列でランダムリードを計測してみます。
まずは2台起動させます。
なおI8gインスタンスは現時点では、us-east-1aではサポートしていないようでした。
ストレージをマウント
各インスタンスに接続します。
通常のインスタンスと異なり、ローカルストレージは明示的にマウントが必要です。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 588K 3.1G 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 22% /
tmpfs 7.7G 0 7.7G 0% /tmp
/dev/nvme0n1p128 10M 1.4M 8.7M 14% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/1000
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:2 0 8G 0 part /
└─nvme0n1p128 259:3 0 10M 0 part /boot/efi
nvme1n1 259:1 0 435.9G 0 disk
一番下のnvme1n1 がローカルの NVMe ストレージです。
これをマウントします。
$ sudo mkfs -t xfs /dev/nvme1n1
meta-data=/dev/nvme1n1 isize=512 agcount=4, agsize=28564453 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=114257812, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=55789, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Discarding blocks...Done.
$ sudo mkdir /data
$ sudo mount /dev/nvme1n1 /data
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 588K 3.1G 1% /run
/dev/nvme0n1p1 8.0G 1.7G 6.3G 22% /
tmpfs 7.7G 0 7.7G 0% /tmp
/dev/nvme0n1p128 10M 1.4M 8.7M 14% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/1000
/dev/nvme1n1 436G 3.1G 433G 1% /data
fioコマンドで性能比較
次に、fioコマンドをインストールします。
fioは「Flexible I/O Tester」の略で、ストレージシステムのI/Oパフォーマンスを測定するためのベンチマークツールです。
sudo yum install -y fio
各インスタンスで fio を 1並列でランダムリードを計測してみます。
I4gインスタンス
$ sudo fio --directory=/data --name fio_test_file --direct=1 --rw=randread --bs=128k --size=1G --numjobs=1 --time_based --runtime=60 --group_reporting --norandommap
fio_test_file: (g=0): rw=randread, bs=(R) 128KiB-128KiB, (W) 128KiB-128KiB, (T) 128KiB-128KiB, ioengine=psync, iodepth=1
fio-3.32
Starting 1 process
fio_test_file: Laying out IO file (1 file / 1024MiB)
Jobs: 1 (f=1): [r(1)][100.0%][r=239MiB/s][r=1915 IOPS][eta 00m:00s]
fio_test_file: (groupid=0, jobs=1): err= 0: pid=27760: Mon Dec 2 04:27:48 2024
read: IOPS=1964, BW=246MiB/s (257MB/s)(14.4GiB/60001msec)
clat (usec): min=140, max=1613, avg=508.40, stdev=64.06
lat (usec): min=140, max=1613, avg=508.49, stdev=64.06
clat percentiles (usec):
| 1.00th=[ 217], 5.00th=[ 461], 10.00th=[ 498], 20.00th=[ 502],
| 30.00th=[ 515], 40.00th=[ 519], 50.00th=[ 523], 60.00th=[ 523],
| 70.00th=[ 529], 80.00th=[ 537], 90.00th=[ 545], 95.00th=[ 545],
| 99.00th=[ 562], 99.50th=[ 586], 99.90th=[ 676], 99.95th=[ 717],
| 99.99th=[ 799]
bw ( KiB/s): min=244992, max=566528, per=100.00%, avg=251553.34, stdev=42626.78, samples=119
iops : min= 1914, max= 4426, avg=1965.26, stdev=333.02, samples=119
lat (usec) : 250=4.39%, 500=7.08%, 750=88.50%, 1000=0.03%
lat (msec) : 2=0.01%
cpu : usr=0.31%, sys=1.16%, ctx=117869, majf=0, minf=43
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=117861,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=246MiB/s (257MB/s), 246MiB/s-246MiB/s (257MB/s-257MB/s), io=14.4GiB (15.4GB), run=60001-60001msec
Disk stats (read/write):
nvme1n1: ios=117623/7, merge=0/3, ticks=59078/1, in_queue=59079, util=98.66%
I8gインスタンス
$ sudo fio --directory=/data --name fio_test_file --direct=1 --rw=randread --bs=128k --size=1G --numjobs=1 --time_based --runtime=60 --group_reporting --norandommap
fio_test_file: (g=0): rw=randread, bs=(R) 128KiB-128KiB, (W) 128KiB-128KiB, (T) 128KiB-128KiB, ioengine=psync, iodepth=1
fio-3.32
Starting 1 process
fio_test_file: Laying out IO file (1 file / 1024MiB)
Jobs: 1 (f=1): [r(1)][100.0%][r=503MiB/s][r=4020 IOPS][eta 00m:00s]
fio_test_file: (groupid=0, jobs=1): err= 0: pid=28248: Mon Dec 2 04:30:34 2024
read: IOPS=4108, BW=514MiB/s (538MB/s)(30.1GiB/60001msec)
clat (usec): min=53, max=1982, avg=243.11, stdev=22.82
lat (usec): min=53, max=1983, avg=243.16, stdev=22.82
clat percentiles (usec):
| 1.00th=[ 159], 5.00th=[ 172], 10.00th=[ 237], 20.00th=[ 239],
| 30.00th=[ 247], 40.00th=[ 247], 50.00th=[ 249], 60.00th=[ 249],
| 70.00th=[ 251], 80.00th=[ 258], 90.00th=[ 260], 95.00th=[ 262],
| 99.00th=[ 265], 99.50th=[ 265], 99.90th=[ 265], 99.95th=[ 265],
| 99.99th=[ 367]
bw ( KiB/s): min=514304, max=780800, per=100.00%, avg=526002.55, stdev=53592.01, samples=119
iops : min= 4018, max= 6100, avg=4109.39, stdev=418.69, samples=119
lat (usec) : 100=0.01%, 250=68.81%, 500=31.18%, 750=0.01%
lat (msec) : 2=0.01%
cpu : usr=0.35%, sys=1.61%, ctx=246500, majf=0, minf=42
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=246497,0,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
READ: bw=514MiB/s (538MB/s), 514MiB/s-514MiB/s (538MB/s-538MB/s), io=30.1GiB (32.3GB), run=60001-60001msec
Disk stats (read/write):
nvme1n1: ios=245695/7, merge=0/3, ticks=58782/0, in_queue=58783, util=98.31%
I4gインスタンスとI8gインスタンスの主要メトリクスを比較した結果はこちらです。
メトリクス | I4gインスタンス | I8gインスタンス | 差異 |
---|---|---|---|
IOPS | 1,964 | 4,108 | 2.1倍向上 |
帯域幅 | 246 MiB/s | 514 MiB/s | 2.1倍向上 |
平均レイテンシー | 508.40 μs | 243.11 μs | 52%減少 |
最小レイテンシー | 140 μs | 53 μs | 62%減少 |
最大レイテンシー | 1,613 μs | 1,982 μs | 23%増加 |
CPU使用率 (usr) | 0.31% | 0.35% | ほぼ同等 |
CPU使用率 (sys) | 1.16% | 1.61% | わずかに増加 |
総I/O量 | 14.4 GiB | 30.1 GiB | 2.1倍向上 |
ディスク使用率 | 98.66% | 98.31% | ほぼ同等 |
アップデートにもあったように、以下の観点で性能向上していることが確認できました!
- I8gインスタンスはI4gインスタンスと比較して、IOPSと帯域幅が約2.1倍向上
- 平均レイテンシーが半分以下に改善
- システムリソース使用率(CPU、ディスク使用率)は両インスタンスでほぼ同等
- 最大レイテンシーはI8gインスタンスの方がやや高いものの、全体的なパフォーマンスは大幅に向上
おわりに
今回はAmazon EC2 I8gインスタンスの一般提供開始について紹介しました。
ストレージ集約型ワークロードの性能を大幅に向上させる新しいインスタンスタイプなので、低レイテンシーが求められるシステムを構築する場合など活躍できるのではないでしょうか。
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!